1. Field of the Invention
The present invention relates generally to the field of system resource allocation, and, more particularly, to system control via resource allocation to satisfy measurable performance objectives.
2. Description of the Related Art
System management generally involves one or more steps of resource allocation. A good allocation of resources is essential for maintaining efficient operation of the system, and generally results in neither over-provisioning which is costly, nor under-provisioning, which can sacrifice the quality of the system output. Indeed, effective allocation of the system resources is an important part of maintaining or exceeding system performance requirements and targets. Resources that can be allocated may include, but are not limited to, central processing unit (“CPU”), bandwidth, memory, database handles, threads, and CPU scheduler priority, and input/output (“I/O”) scheduler priority.
One step in allocating resources involves defining one or more desired goals for the system functioning. As used herein, the term “goal” refers to the maximization/minimization of, the achievement of a desired upper/lower bound on, or attempting to achieve some target value of, some function of one or more measurable system characteristics. These characteristics may include measurements of the utilization of system resources, volume or quality measurements on system outputs, and the like. Inter-dependencies between resources may be very important when the goal is based on system resource utilization; that is, utilization of one resource may depend on the utilization of one or more other resources.
For example, in a computer system, the percentage of the CPU time used for an application running on the system (i.e., the application's CPU utilization) may depend on the amount of network bandwidth allocated to pass data to that application. In other words, in this example, CPU utilization and network bandwidth are two inter-dependent resources in a computer system. The system goals will often be expressed in terms of one resource. Consider, for example, a system with two resources, A and B. If resource A depends upon resource B, in the manner defined above, then, by adapting the allocation of resource B, one can indirectly control the utilization of resource A. In the above example, the resources can be equally swapped, and network bandwidth utilization can be controlled via the allocation of CPU resources.
Given different allocations of a specific resource, measurements of the system can be taken to determine the degree to which goals are satisfied. These measurements can be used to adaptively “learn” the relationships between resources of the system and system goals (recall that the system goal(s) may depend directly on utilization of some system resources). The relationships between resources and goals in systems are usually too complex to be known a priori, and difficult (or, as in stochastic systems, impossible) to obtain exactly. Thus, the learned estimates of these relationships can be very useful substitutes for exact relationships when deciding resource allocations in the system to achieve system goals.
In complex systems, which are precisely those systems that require control methods, the measurements are “noisy” (i.e., they include random variations over a short time scale), thereby making them inaccurate to some degree. Examples of these measurements in a computer system include the amount of CPU utilization by a particular process and the amount of memory utilization by a particular process. CPU utilization measurements may be “noisy” over short time intervals because they depend on (a) the complicated operation of operating system (“OS”) schedulers, (b) background system processes that use an often time-varying amount of CPU utilization, and (c) different states of program execution that may cause temporary fluctuations in the CPU utilization.
Moreover, obtaining the measurements can often perturb the system. For example, consider an example of obtaining measurements of the quality of a system given a particular resource allocation. Building a model of the relationship between the resource and the quality of the system may require setting the system to many different resource allocation levels. However, perturbing the system by changing resource allocation levels, especially when done repeatedly, may result in oscillations of one or more dependent quantities in the system, including the system measurements that figure into the goal function(s)).
Other methods for system management often suffer from one or more of the following drawbacks:                (i) Ad-hoc: In a number of methods, the relationship between resources is neither known nor estimated. In the operation of such systems, resource allocation decisions can have unintended effects. In this case, resource allocation decisions that do not take into account the effects of changing one resource on one or more other resources can be referred to as “ad-hoc.”        (ii) Non-adaptive: Other methods may attempt to take into account relationships across resources, such as in classic optimization-based resource allocation methods, which assume a structure for the relationships, but do not respond to changes in the operation of the system.        